home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / C / LIB / DESK / CORE / Desk / h_doc / SWI < prev    next >
Text File  |  1996-06-26  |  16KB  |  326 lines

  1. /*
  2.     ####             #    #     # #
  3.     #   #            #    #       #          The FreeWare C library for
  4.     #   #  ##   ###  #  # #     # ###             RISC OS machines
  5.     #   # #  # #     # #  #     # #  #   ___________________________________
  6.     #   # ####  ###  ##   #     # #  #
  7.     #   # #        # # #  #     # #  #    Please refer to the accompanying
  8.     ####   ### ####  #  # ##### # ###    documentation for conditions of use
  9.     ________________________________________________________________________
  10.  
  11.     File:    SWI.h
  12.     Author:  Copyright © 1992 Jason Williams
  13.     Version: 1.02 (30 May 1994)
  14.     Purpose: Generic SWI call veneer function
  15. */
  16.  
  17.  
  18. #ifndef __Desk_SWI_h
  19. #define __Desk_SWI_h
  20.  
  21. #ifdef __cplusplus
  22.     extern "C" {
  23. #endif
  24.  
  25. #ifndef __Desk_Core_h
  26.     #include "Desk.Core.h"
  27. #endif
  28.  
  29.  
  30.  
  31.  
  32.  
  33. Desk_os_error *Desk_SWI(int numregsin, int numregsout, int swicode, ... );
  34. /*
  35.  *  This function provides a general-purpose SWI call veneer.
  36.  *  It is not meant to be the most efficient SWI caller, but the most
  37.  *  general one. If you require faster SWI handling than this function
  38.  *  provides, then you will need to construct an assembler veneer for the SWI
  39.  *  (see WimpSWIs library source for examples)
  40.  *
  41.  *  Call it specifying the number of arguments you are passing in,
  42.  *                     the number of arguments you want passed back,
  43.  *                     the SWI number to call (X or normal),
  44.  *                     and a list of parameters...
  45.  * Parameters:
  46.  *   The SWI list in should be a list of integers, exactly the number
  47.  *   specified as "numregsin". These will be passed to the SWI as registers
  48.  *   0, 1, 2, ... A maximum of 6 such registers can be specified.
  49.  *
  50.  *   The SWI list out should be a list of pointers to result variables
  51.  *   they will be assigned the register results from the SWI, in order.
  52.  *   Pass in a NULL pointer for any of these if the result is to be ignored
  53.  *
  54.  * Examples:
  55.  *   SWI(0, 0, Desk_SWI_Hourglass_On);
  56.  *   SWI(1, 0, Desk_SWI_Hourglass_Percentage, 33);
  57.  *   SWI(0, 0, Desk_SWI_Hourglass_Smash | Desk_XOS_Bit);   // To call Desk_XHourglass_Smash
  58.  *
  59.  *   { int ramsprites, romsprites;
  60.  *     \* Read rom sprite and ram sprite pool base addresses: *\
  61.  *     SWI(0, 2, Desk_SWI_Wimp_BaseOfSprites, &romsprites, &ramsprites)
  62.  *
  63.  *     \* Read ram sprite base ONLY *\
  64.  *     SWI(0, 2, Desk_SWI_Wimp_BaseOfSprites, NULL, &ramsprites)
  65.  *   }
  66.  *
  67.  *   -- See Hourglass.h for examples of how to make low-level SWI calls
  68.  *      look nice in your calling code without the extra expense of another
  69.  *      function call.
  70.  */
  71.  
  72.  
  73.  
  74. /* A few useful SWI numbers... */
  75.  
  76. #define Desk_SWI_XOS_Bit                        0x020000
  77.  
  78. #define Desk_XOS_Bit Desk_SWI_XOS_Bit 
  79.  
  80. #define Desk_SWI_OS_WriteI                      0x000100
  81.  
  82. #define Desk_SWI_OS_WriteC                      0x000000
  83. #define Desk_SWI_OS_WriteS                      0x000001
  84. #define Desk_SWI_OS_Write0                      0x000002
  85. #define Desk_SWI_OS_NewLine                     0x000003
  86. #define Desk_SWI_OS_ReadC                       0x000004
  87. #define Desk_SWI_OS_CLI                         0x000005
  88. #define Desk_SWI_OS_Byte                        0x000006
  89. #define Desk_SWI_OS_Word                        0x000007
  90. #define Desk_SWI_OS_File                        0x000008
  91. #define Desk_SWI_OS_Args                        0x000009
  92. #define Desk_SWI_OS_BGet                        0x00000a
  93. #define Desk_SWI_OS_BPut                        0x00000b
  94. #define Desk_SWI_OS_GBPB                        0x00000c
  95. #define Desk_SWI_OS_Find                        0x00000d
  96. #define Desk_SWI_OS_ReadLine                    0x00000e
  97. #define Desk_SWI_OS_Control                     0x00000f
  98. #define Desk_SWI_OS_GetEnv                      0x000010
  99. #define Desk_SWI_OS_Exit                        0x000011
  100. #define Desk_SWI_OS_SetEnv                      0x000012
  101. #define Desk_SWI_OS_IntOn                       0x000013
  102. #define Desk_SWI_OS_IntOff                      0x000014
  103. #define Desk_SWI_OS_CallBack                    0x000015
  104. #define Desk_SWI_OS_EnterOS                     0x000016
  105. #define Desk_SWI_OS_BreakPt                     0x000017
  106. #define Desk_SWI_OS_BreakCtrl                   0x000018
  107. #define Desk_SWI_OS_UnusedSWI                   0x000019
  108. #define Desk_SWI_OS_UpdateMEMC                  0x00001a
  109. #define Desk_SWI_OS_SetCallBack                 0x00001b
  110. #define Desk_SWI_OS_Mouse                       0x00001c
  111. #define Desk_SWI_OS_Heap                        0x00001d
  112. #define Desk_SWI_OS_Module                      0x00001e
  113. #define Desk_SWI_OS_Claim                       0x00001f
  114. #define Desk_SWI_OS_Release                     0x000020
  115. #define Desk_SWI_OS_ReadUnsigned                0x000021
  116. #define Desk_SWI_OS_GenerateEvent               0x000022
  117. #define Desk_SWI_OS_ReadVarVal                  0x000023
  118. #define Desk_SWI_OS_SetVarVal                   0x000024
  119. #define Desk_SWI_OS_GSInit                      0x000025
  120. #define Desk_SWI_OS_GSRead                      0x000026
  121. #define Desk_SWI_OS_GSTrans                     0x000027
  122. #define Desk_SWI_OS_BinaryToDecimal             0x000028
  123. #define Desk_SWI_OS_FSControl                   0x000029
  124. #define Desk_SWI_OS_ChangeDynamicArea           0x00002a
  125. #define Desk_SWI_OS_GenerateError               0x00002b
  126. #define Desk_SWI_OS_ReadEscapeState             0x00002c
  127. #define Desk_SWI_OS_EvaluateExpression          0x00002d
  128. #define Desk_SWI_OS_SpriteOp                    0x00002e
  129. #define Desk_SWI_OS_ReadPalette                 0x00002f
  130. #define Desk_SWI_OS_ServiceCall                 0x000030
  131. #define Desk_SWI_OS_ReadVduVariables            0x000031
  132. #define Desk_SWI_OS_ReadPoint                   0x000032
  133. #define Desk_SWI_OS_UpCall                      0x000033
  134. #define Desk_SWI_OS_CallAVector                 0x000034
  135. #define Desk_SWI_OS_ReadModeVariable            0x000035
  136. #define Desk_SWI_OS_RemoveCursors               0x000036
  137. #define Desk_SWI_OS_RestoreCursors              0x000037
  138. #define Desk_SWI_OS_SWINumberToString           0x000038
  139. #define Desk_SWI_OS_SWINumberFromString         0x000039
  140. #define Desk_SWI_OS_ValidateAddress             0x00003a
  141. #define Desk_SWI_OS_CallAfter                   0x00003b
  142. #define Desk_SWI_OS_CallEvery                   0x00003c
  143. #define Desk_SWI_OS_RemoveTickerEvent           0x00003d
  144. #define Desk_SWI_OS_InstallKeyHandler           0x00003e
  145. #define Desk_SWI_OS_CheckModeValid              0x00003f
  146. #define Desk_SWI_OS_ChangeEnvironment           0x000040
  147. #define Desk_SWI_OS_ClaimScreenMemory           0x000041
  148. #define Desk_SWI_OS_ReadMonotonicTime           0x000042
  149. #define Desk_SWI_OS_SubstituteArgs              0x000043
  150. #define Desk_SWI_OS_PrettyPrint                 0x000044
  151. #define Desk_SWI_OS_Plot                        0x000045
  152. #define Desk_SWI_OS_WriteN                      0x000046
  153. #define Desk_SWI_OS_AddToVector                 0x000047
  154. #define Desk_SWI_OS_WriteEnv                    0x000048
  155. #define Desk_SWI_OS_ReadArgs                    0x000049
  156. #define Desk_SWI_OS_ReadRAMFsLimits             0x00004a
  157. #define Desk_SWI_OS_ClaimDeviceVector           0x00004b
  158. #define Desk_SWI_OS_ReleaseDeviceVector         0x00004c
  159. #define Desk_SWI_OS_DelinkApplication           0x00004d
  160. #define Desk_SWI_OS_RelinkApplication           0x00004e
  161. #define Desk_SWI_OS_HeapSort                    0x00004f
  162. #define Desk_SWI_OS_ExitAndDie                  0x000050
  163. #define Desk_SWI_OS_ReadMemMapInfo              0x000051
  164. #define Desk_SWI_OS_ReadMemMapEntries           0x000052
  165. #define Desk_SWI_OS_SetMemMapEntries            0x000053
  166. #define Desk_SWI_OS_AddCallBack                 0x000054
  167. #define Desk_SWI_OS_ReadDefaultHandler          0x000055
  168. #define Desk_SWI_OS_SetECFOrigin                0x000056
  169. #define Desk_SWI_OS_SerialOp                    0x000057
  170. #define Desk_SWI_OS_ReadSysInfo                 0x000058
  171. #define Desk_SWI_OS_Confirm                     0x000059
  172. #define Desk_SWI_OS_ChangedBox                  0x00005a
  173. #define Desk_SWI_OS_CRC                         0x00005b
  174. #define Desk_SWI_OS_ReadDynamicArea             0x00005c
  175. #define Desk_SWI_OS_PrintChar                   0x00005d
  176. #define Desk_SWI_OS_ConvertStandardDateAndTime  0x0000c0
  177. #define Desk_SWI_OS_ConvertDateAndTime          0x0000c1
  178. #define Desk_SWI_OS_ConvertHex1                 0x0000d0
  179. #define Desk_SWI_OS_ConvertHex2                 0x0000d1
  180. #define Desk_SWI_OS_ConvertHex4                 0x0000d2
  181. #define Desk_SWI_OS_ConvertHex6                 0x0000d3
  182. #define Desk_SWI_OS_ConvertHex8                 0x0000d4
  183. #define Desk_SWI_OS_ConvertCardinal1            0x0000d5
  184. #define Desk_SWI_OS_ConvertCardinal2            0x0000d6
  185. #define Desk_SWI_OS_ConvertCardinal3            0x0000d7
  186. #define Desk_SWI_OS_ConvertCardinal4            0x0000d8
  187. #define Desk_SWI_OS_ConvertInteger1             0x0000d9
  188. #define Desk_SWI_OS_ConvertInteger2             0x0000da
  189. #define Desk_SWI_OS_ConvertInteger3             0x0000db
  190. #define Desk_SWI_OS_ConvertInteger4             0x0000dc
  191. #define Desk_SWI_OS_ConvertBinary1              0x0000dd
  192. #define Desk_SWI_OS_ConvertBinary2              0x0000de
  193. #define Desk_SWI_OS_ConvertBinary3              0x0000df
  194. #define Desk_SWI_OS_ConvertBinary4              0x0000e0
  195. #define Desk_SWI_OS_ConvertSpacedCardinal1      0x0000e1
  196. #define Desk_SWI_OS_ConvertSpacedCardinal2      0x0000e2
  197. #define Desk_SWI_OS_ConvertSpacedCardinal3      0x0000e3
  198. #define Desk_SWI_OS_ConvertSpacedCardinal4      0x0000e4
  199. #define Desk_SWI_OS_ConvertSpacedInteger1       0x0000e5
  200. #define Desk_SWI_OS_ConvertSpacedInteger2       0x0000e6
  201. #define Desk_SWI_OS_ConvertSpacedInteger3       0x0000e7
  202. #define Desk_SWI_OS_ConvertSpacedInteger4       0x0000e8
  203. #define Desk_SWI_OS_ConvertFixedNetStation      0x0000e9
  204. #define Desk_SWI_OS_ConvertNetStation           0x0000ea
  205. #define Desk_SWI_OS_ConvertFixedFileSize        0x0000eb
  206. #define Desk_SWI_OS_ConvertFileSize             0x0000ec
  207. #define Desk_SWI_IIC_Control                    0x000240
  208. #define Desk_SWI_Econet_CreateReceive           0x040000
  209. #define Desk_SWI_Econet_ExamineReceive          0x040001
  210. #define Desk_SWI_Econet_ReadReceive             0x040002
  211. #define Desk_SWI_Econet_AbandonReceive          0x040003
  212. #define Desk_SWI_Econet_WaitForReception        0x040004
  213. #define Desk_SWI_Econet_EnumerateReceive        0x040005
  214. #define Desk_SWI_Econet_StartTransmit           0x040006
  215. #define Desk_SWI_Econet_PollTransmit            0x040007
  216. #define Desk_SWI_Econet_AbandonTransmit         0x040008
  217. #define Desk_SWI_Econet_DoTransmit              0x040009
  218. #define Desk_SWI_Econet_ReadLocalStationAndNet  0x04000a
  219. #define Desk_SWI_Econet_ConvertStatusTOString   0x04000b
  220. #define Desk_SWI_Econet_ConvertStatusToError    0x04000c
  221. #define Desk_SWI_Econet_ReadProtection          0x04000d
  222. #define Desk_SWI_Econet_SetProtection           0x04000e
  223. #define Desk_SWI_Econet_ReadStationNumber       0x04000f
  224. #define Desk_SWI_Econet_PrintBanner             0x040010
  225. #define Desk_SWI_Econet_ReleasePort             0x040012
  226. #define Desk_SWI_Econet_AllocatePort            0x040013
  227. #define Desk_SWI_Econet_DeAllocatePort          0x040014
  228. #define Desk_SWI_Econet_ClaimPort               0x040015
  229. #define Desk_SWI_Econet_StartImmediate          0x040016
  230. #define Desk_SWI_Econet_DoImmediate             0x040017
  231. #define Desk_SWI_NetFS_ReadFSNumber             0x040040
  232. #define Desk_SWI_NetFS_SetFSNumber              0x040041
  233. #define Desk_SWI_NetFS_ReadFSName               0x040042
  234. #define Desk_SWI_NetFS_SetFSName                0x040043
  235. #define Desk_SWI_NetFS_ReadCurrentContext       0x040044
  236. #define Desk_SWI_NetFS_SetCurrentContext        0x040045
  237. #define Desk_SWI_NetFS_ReadFSTimeouts           0x040046
  238. #define Desk_SWI_NetFS_SetFSTimeouts            0x040047
  239. #define Desk_SWI_NetFS_DoFSOp                   0x040048
  240. #define Desk_SWI_NetFS_EnumerateFSList          0x040049
  241. #define Desk_SWI_NetFS_EnumerateFS              0x04004a
  242. #define Desk_SWI_NetFS_ConvertDate              0x04004b
  243. #define Desk_SWI_NetFS_DoFSOpToGivenFS          0x04004c
  244. #define Desk_SWI_Sound_Configure                0x040140
  245. #define Desk_SWI_Sound_Enable                   0x040141
  246. #define Desk_SWI_Sound_Stereo                   0x040142
  247. #define Desk_SWI_Sound_Speaker                  0x040143
  248. #define Desk_SWI_Sound_Volume                   0x040180
  249. #define Desk_SWI_Sound_SoundLog                 0x040181
  250. #define Desk_SWI_Sound_LogScale                 0x040182
  251. #define Desk_SWI_Sound_InstallVoice             0x040183
  252. #define Desk_SWI_Sound_RemoveVoice              0x040184
  253. #define Desk_SWI_Sound_AttachVoice              0x040185
  254. #define Desk_SWI_Sound_ControlPacked            0x040186
  255. #define Desk_SWI_Sound_Tuning                   0x040187
  256. #define Desk_SWI_Sound_Pitch                    0x040188
  257. #define Desk_SWI_Sound_Control                  0x040189
  258. #define Desk_SWI_Sound_AttachNamedVoice         0x04018a
  259. #define Desk_SWI_Sound_ReadControlBlock         0x04018b
  260. #define Desk_SWI_Sound_WriteControlBlock        0x04018c
  261. #define Desk_SWI_Sound_QInit                    0x0401c0
  262. #define Desk_SWI_Sound_QSchedule                0x0401c1
  263. #define Desk_SWI_Sound_QRemove                  0x0401c2
  264. #define Desk_SWI_Sound_QFree                    0x0401c3
  265. #define Desk_SWI_Sound_QSDispatch               0x0401c4
  266. #define Desk_SWI_Sound_QTempo                   0x0401c5
  267. #define Desk_SWI_Sound_QBeat                    0x0401c6
  268. #define Desk_SWI_Sound_QInterface               0x0401c7
  269. #define Desk_SWI_NetPrint_ReadPSNumber          0x040200
  270. #define Desk_SWI_NetPrint_SetPSNumber           0x040201
  271. #define Desk_SWI_NetPrint_ReadPSName            0x040202
  272. #define Desk_SWI_NetPrint_SetPSName             0x040203
  273. #define Desk_SWI_NetPrint_ReadPSTimeouts        0x040204
  274. #define Desk_SWI_NetPrint_SetPSTimeouts         0x040205
  275. #define Desk_SWI_ADFS_DiscOp                    0x040240
  276. #define Desk_SWI_ADFS_HDC                       0x040241
  277. #define Desk_SWI_ADFS_Drives                    0x040242
  278. #define Desk_SWI_ADFS_FreeSpace                 0x040243
  279. #define Desk_SWI_ADFS_Retries                   0x040244
  280. #define Desk_SWI_ADFS_DescribeDisc              0x040245
  281. #define Desk_SWI_Podule_ReadID                  0x040280
  282. #define Desk_SWI_Podule_ReadHeader              0x040281
  283. #define Desk_SWI_Podule_EnumerateChunks         0x040282
  284. #define Desk_SWI_Podule_ReadChunk               0x040283
  285. #define Desk_SWI_Podule_ReadBytes               0x040284
  286. #define Desk_SWI_Podule_WriteBytes              0x040285
  287. #define Desk_SWI_Podule_CallLoader              0x040286
  288. #define Desk_SWI_Podule_RawRead                 0x040287
  289. #define Desk_SWI_Podule_RawWrite                0x040288
  290. #define Desk_SWI_Podule_HardwareAddress         0x040289
  291. #define Desk_SWI_WaveSynth_Load                 0x040300
  292. #define Desk_SWI_Debugger_Disassemble           0x040380
  293. #define Desk_SWI_FPEmulator_Version             0x040480
  294. #define Desk_SWI_FileCore_DiscOp                0x040540
  295. #define Desk_SWI_FileCore_Create                0x040541
  296. #define Desk_SWI_FileCore_Drives                0x040542
  297. #define Desk_SWI_FileCore_FreeSpace             0x040543
  298. #define Desk_SWI_FileCore_FloppyStructure       0x040544
  299. #define Desk_SWI_FileCore_DescribeDisc          0x040545
  300. #define Desk_SWI_Shell_Create                   0x0405c0
  301. #define Desk_SWI_Shell_Destroy                  0x0405c1
  302. #define Desk_SWI_Draw_ProcessPath               0x040700
  303. #define Desk_SWI_Draw_ProcessPathFP             0x040701
  304. #define Desk_SWI_Draw_Fill                      0x040702
  305. #define Desk_SWI_Draw_FillFP                    0x040703
  306. #define Desk_SWI_Draw_Stroke                    0x040704
  307. #define Desk_SWI_Draw_StrokeFP                  0x040705
  308. #define Desk_SWI_Draw_StrokePath                0x040706
  309. #define Desk_SWI_Draw_StrokePathFP              0x040707
  310. #define Desk_SWI_Draw_FlattenPath               0x040708
  311. #define Desk_SWI_Draw_FlattenPathFP             0x040709
  312. #define Desk_SWI_Draw_TransformPath             0x04070a
  313. #define Desk_SWI_Draw_TransformPathFP           0x04070b
  314. #define Desk_SWI_RamFS_DiscOp                   0x040780
  315. #define Desk_SWI_RamFS_Drives                   0x040782
  316. #define Desk_SWI_RamFS_FreeSpace                0x040783
  317. #define Desk_SWI_RamFS_DescribeDisc             0x040785
  318.  
  319.  
  320. #ifdef __cplusplus
  321. }
  322. #endif
  323.  
  324.  
  325. #endif
  326.